import type { Options } from '@/plugin/_plugin_methods/option.ts'

function windowInterceptor(options: Options) {
  // 全局属性拦截器
  Object.keys(options.utils).forEach((utilKey) => {
    Object.defineProperty(window, utilKey, {
      get() {
        if (!window.cjs) {
          window.cjs = {}
        }
        if (!window.cjs.axios) {
          window.cjs[utilKey] = options.utils[utilKey]
        }
        return window.cjs.axios
      },
      set(value) {
        if (!window.cjs) {
          window.cjs = {}
        }
        window.cjs[utilKey] = value
      },
      configurable: true,
      enumerable: true,
    })
  })
}

export default windowInterceptor
